<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <title>Title</title>
</head>
<body>
  <script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script>
  <div id="app">
    <c2></c2>
    <c1></c1><!--因为组件1是在组件2中注册，所以浏览器不会识别，会忽略。-->
  </div>
  <!--<javascript type="text/x-template" id="cpn">
    <div>
      我是被抽取的模板
    </div>
  </javascript>-->
  <template id="cpn">
    <div>
      我是被抽取的模板
    </div>
  </template>
  <script>
    // 组件1
    const MyComponent1 = Vue.extend({
      template: `<div>我是组件一</div>`
    });
    // 组件2
    const MyComponent2 = Vue.extend({
      template: `
        <div>
          <div>我是组件二</div>
          <c1></c1>
        </div>`,
      // 子组件
      components: {
        c1: MyComponent1
      }
    });

    // 全局注册组件的语法糖。后台还是先创建再注册
    Vue.component({
      template: 'cpn'
    })

    // 组件中的数据

    var vm = new Vue({
      el: '#app',
      components: {
        cj: {
          template: '#cpn'
        }
      }
    })
  </script>
</body>
</html>